1. Field
This application relates generally to a computerized system to provide efficient modification of remote software and, more specifically, to adaptation and customization of a computer transaction dialogue module.
2. Description of the Related Art
It is well known to those of skill in the art that computerized systems can be adapted to perform specific functionality by implementing software code. For example, the software code may be written in languages such as C, C++, or Java.
A computerized system may be constructed, which includes electronic hardware, one or more computer processors, and software, which is able to perform system functionality. Typically, the software is written or created as source code and later compiled or converted into computer-executable instructions able to be read and executed by a computer processor without additional translation or adaptation. For example, the source code may be written in languages such as C, C++, or Java. Computer-executable instructions are sometimes also referred to as executable code or machine code.
For example, the computer-executable instructions may be compiled for and executed on a specific computer processor, such as the Intel Pentium processor from Intel Corporation, or may be used to modify the functionality of a Programmable Gate Array (PGA) or Field Programmable Gate Array (FPGA), such as those provided by Xilinx Corporation. In most cases, computer-executable code is specific to one type of processor or logical device.
Virtual machines can be used to provide a method of executing code on a computer system that is not dependent on a specific processor or hardware configuration. When using a virtual machine, a portion of code (typically in the form of source code) is compiled or translated into intermediary code, such as Java Byte Code. The intermediary code is then able to be further translated using the virtual machine, which itself is run on a computer processor (and perhaps also an operating system). Thus, a virtual machine is able to emulate a standardized computer platform that is independent of the actual computer processor or hardware configuration.
A computerized system, in the context of the embodiments described herein, includes more than one hardware device, each hardware device running a separate software application. Each software application comprises, in part, computer-executable instructions that allow the associated hardware device to interact with a user and communicate with another hardware device over a distributed network. For example, the software application may be adapted to interact directly with a user of the hardware device by accepting user input. The software application may be further adapted to communicate the user input to another hardware device using a network connection.
Oftentimes, after a computerized system has been initially constructed, modifications may be required, either to improve the functionality of the system or to customize the system to meet new requirements. In some cases, these modifications require changes to the software application stored on each system device.
Typically, a software application includes computer-executable instructions that are not able to be edited or modified directly by a developer. Using known methods, the developer may only implement the required changes by creating or editing source code. The updated source code must then be recompiled or translated into an updated set of computer-executable instructions and distributed to the hardware devices in the system as an updated software application. Typically, the updated set of computer-executable instructions that comprises an updated software application includes a relatively large amount of information.
However, in many situations, it may be difficult to distribute a newly compiled version of the updated software application to all of the devices in the system. This is particularly true if the system is distributed over a large geographic area. For example, it may be difficult to locate each system device and transport it to a central location or development center. Because physical access to the devices is not practical, the new software application cannot be uploaded using a traditional wired transmission (e.g., an interface cable).
In some computerized systems, the only practical option may be to upload the updated software application using an existing communication network. However, if the communications network has limited data transmission capabilities, it may be difficult to transmit the large amount of information (e.g., an entire software application). For example, a software application may be initially installed on a wireless mobile device (e.g., a cell phone or PDA). Typically, the device is issued to a user, who may travel or reside far from a software development center. The only method of communicating with the device may be over a wireless telecommunications network. However, due to bandwidth limitations on data transfer over the wireless network, an upload of the entire software application may not be economically feasible. Even if an upload of the application is possible, it may take an unacceptable amount of time due to the slow transfer rate of a wireless network (as compared to a dedicated wired transmission line or cable). These problems are further exacerbated if the computerized system includes a large number of wireless mobile devices, each requiring a separate application upload. Developing and testing separate applications for each mobile device can be time-consuming and economically infeasible. Additionally, if there are different versions of the software application distributed among a large number of mobile devices, a uniform software application update may be difficulty to manage and track.
What is needed is a computerized system able to provide efficient modification of software applications that are distributed across a network of remote devices.